package com.ycher.hellokotlin.first

/**
 * 单例类
 * 关键字 object
 */
object Singleton {
    fun singletonTest() {
        System.out.println("singletonTest is called.");
    }
}


/**
 * Java 版单例模式
 *
 * 首先为了禁止外部创建 Singleton 的实例，我们需要用private关键字将 Singleton 的构造函数私有化，
 * 然后给外部提供了一个 getInstance() 静态方法用于获取Singleton的实例。
 * 在 getInstance() 方法中，我们判断如果当前缓存的 Singleton 实例为 null，就创建一个新的实例，否则直接返回缓存的实例即可
 */
//public class Singleton {
//    private static Singleton instance;
//
//    private Singleton() {}
//
//    public synchronized static Singleton getInstance() {
//        if (instance == null) {
//            instance = new Singleton();
//        }
//        return instance;
//    }
//
//    public void singletonTest() {
//        System.out.println("singletonTest is called.");
//    }
//}